const OSS = require('ali-oss');
const path = require('path');
const { ali_oss } = require('../../server_config.json')
const logger = require('../libs/log').logger;

const client = new OSS({
    'region': ali_oss.region,
    'accessKeyId': ali_oss.accessKeyId,
    'accessKeySecret': ali_oss.accessKeySecret,
    'bucket': ali_oss.bucket
})
const rules = [{
    'allowedOrigin': '*',
    'allowedMethod': ['PUT', 'POST', 'GET', 'DELETE'],
    'allowedHeader': '*',
    'exposeHeader': 'Content-Length',
    'MaxAgeSeconds': '600'
}];
const headers = {
    // 指定该Object被下载时网页的缓存行为。
    // 'Cache-Control': 'no-cache', 
    // 指定该Object被下载时的名称。
    // 'Content-Disposition': 'oss_download.txt', 
    // 指定该Object被下载时的内容编码格式。
    // 'Content-Encoding': 'UTF-8', 
    // 指定过期时间。
    // 'Expires': 'Wed, 08 Jul 2022 16:57:01 GMT', 
    // 指定Object的存储类型。
    // 'x-oss-storage-class': 'Standard', 
    // 指定Object的访问权限。
    // 'x-oss-object-acl': 'private', 
    // 设置Object的标签，可同时设置多个标签。
    // 'x-oss-tagging': 'Tag1=1&Tag2=2', 
    // 指定CopyObject操作时是否覆盖同名目标Object。此处设置为true，表示禁止覆盖同名Object。
    // 'x-oss-forbid-overwrite': 'true', 
};

async function ali_put(objectname, filepath) {
    await client.putBucketCORS(ali_oss.bucket, rules);
    return await client.put(ali_oss.filepathname + '/' + objectname, path.normalize(filepath));
}
async function ali_get(objectname) {
    await client.putBucketCORS(ali_oss.bucket, rules);
    return await client.get(ali_oss.filepathname + '/' + objectname);
}
async function ali_del(objectname) {
    await client.putBucketCORS(ali_oss.bucket, rules);
    return await client.delete(ali_oss.filepathname + '/' + objectname);
}
async function ali_signature(objectname) {
    await client.putBucketCORS(ali_oss.bucket, rules);
    return await client.signatureUrl(ali_oss.filepathname + '/' + objectname, { expires: 600, process: 'image/resize,w_100' });
}
async function processImage(sourceImage, targetImage, processStr, targetBucket) {
    const result = await client.get(sourceImage,
        './example-watermark.jpg', { process: 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ' }
    );
    console.log(result.res.status);
    return result;

}

//   // 图片处理持久化 : 缩放
//   processImage("image/resize,m_fixed,w_100,h_100")

//   // 图片处理持久化 : 裁剪
//   processImage("image/crop,w_100,h_100,x_100,y_100,r_1")

//   // 图片处理持久化 : 旋转
//   processImage("image/rotate,90")

//   // 图片处理持久化 : 锐化
//   processImage("image/sharpen,100")

//   // 图片处理持久化 : 水印
//   processImage("image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ")

//   // 图片处理持久化 : 格式转换
//   processImage("image/format,jpg")

//   // 图片处理持久化 : 格式转换，并设置保存图片处理持久化结果的目标bucket。
//   processImage("image/format,jpg", "<target bucket>")

module.exports = {
    ali_put,
    ali_get,
    ali_del,
    ali_signature,
    processImage
};